package com.zzb.service.impl;

import com.github.pagehelper.PageHelper;
import com.zzb.DTO.NewsTypeDTO;
import com.zzb.DTO.ResultDTO;
import com.zzb.VO.NewsTypeVO;
import com.zzb.dao.NewsTypeDao;
import com.zzb.entity.NewsTypeEntity;
import com.zzb.service.NewsTypeService;
import com.zzb.util.Tool;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class NewsTypeServiceImpl implements NewsTypeService {
    NewsTypeEntity newsTypeEntity = new NewsTypeEntity();
    @Resource
    NewsTypeDao newsTypeDao;

    /**
     * 添加
     */
    @Override
    public ResultDTO add(NewsTypeVO newsTypeVO) {
        //数据复制
        BeanUtils.copyProperties(newsTypeVO, newsTypeEntity);
        //判断类型是否存在
        if (newsTypeDao.findByName(newsTypeEntity) == null) {
            //不存在
            return ResultDTO.getResult("success", newsTypeDao.add(newsTypeEntity));
        } else {
            //已存在
            return ResultDTO.getResult("error", 0);
        }
    }

    /**
     * 删除
     */
    @Override
    public ResultDTO delete(NewsTypeVO newsTypeVO) {
        //数据复制
        BeanUtils.copyProperties(newsTypeVO, newsTypeEntity);
        //判断类型是否存在
        if (newsTypeDao.findById(newsTypeEntity) != null) {
            //存在
            return ResultDTO.getResult("success", newsTypeDao.delete(newsTypeEntity));
        } else {//不存在
            return ResultDTO.getResult("error", 0);
        }
    }

    /**
     * 根据id查找
     */
    @Override
    public ResultDTO findById(NewsTypeVO newsTypeVO) {
        //复制
        BeanUtils.copyProperties(newsTypeVO, newsTypeEntity);
        //根据id查找数据
        newsTypeEntity = newsTypeDao.findById(newsTypeEntity);
        if (newsTypeEntity != null) {
            //数据存在
            NewsTypeDTO newsTypeDTO = new NewsTypeDTO();
            BeanUtils.copyProperties(newsTypeEntity, newsTypeDTO);
            return ResultDTO.getResult("success", newsTypeDTO);
        } else {//不存在
            return ResultDTO.getResult("error", 0);
        }
    }

    /***
     * 查找全部
     */
    @Override
    public ResultDTO findAll(NewsTypeVO newsTypeVO) {
        BeanUtils.copyProperties(newsTypeVO, newsTypeEntity);
        //查询总条数
        int count = newsTypeDao.count(newsTypeEntity);
        if (newsTypeEntity.getPage() != null) {
            //插件分页
            PageHelper.startPage(newsTypeVO.getPage(),newsTypeEntity.getLimit());
        }
        List<NewsTypeEntity> list = newsTypeDao.findAll(newsTypeEntity);
        //集合复制
        List<NewsTypeDTO> newsTypeDTOList = Tool.copy(list, NewsTypeDTO.class);
        return ResultDTO.getResult(count, newsTypeDTOList);
    }

    /**
     * 数据更新
     */
    @Override
    public ResultDTO update(NewsTypeVO newsTypeVO) {
        BeanUtils.copyProperties(newsTypeVO, newsTypeEntity);
        NewsTypeEntity findNewsTypeEntity = newsTypeDao.findByName(newsTypeEntity);
        if (findNewsTypeEntity == null) {//类型名称不存在或者没有修改名字
            return ResultDTO.getResult("success", newsTypeDao.update(newsTypeEntity));
        }
        String newName = newsTypeEntity.getName();
        String oldName = findNewsTypeEntity.getName();
        if (oldName.equals(newName)) {
            return ResultDTO.getResult("success", newsTypeDao.update(newsTypeEntity));
        }
        return ResultDTO.getResult("error", 0);
    }
}
